home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / sys / ucontext.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  3KB  |  130 lines

  1. /* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. #ifndef _SYS_UCONTEXT_H
  20. #define _SYS_UCONTEXT_H    1
  21.  
  22. #include <features.h>
  23. #include <signal.h>
  24.  
  25. /* We need the signal context definitions even if they are not used
  26.    included in <signal.h>.  */
  27. #include <bits/sigcontext.h>
  28.  
  29.  
  30. /* Type for general register.  */
  31. typedef int greg_t;
  32.  
  33. /* Number of general registers.  */
  34. #define NGREG    19
  35.  
  36. /* Container for all general registers.  */
  37. typedef greg_t gregset_t[NGREG];
  38.  
  39. #ifdef __USE_GNU
  40. /* Number of each register is the `gregset_t' array.  */
  41. enum
  42. {
  43.   REG_GS = 0,
  44. # define REG_GS        REG_GS
  45.   REG_FS,
  46. # define REG_FS        REG_FS
  47.   REG_ES,
  48. # define REG_ES        REG_ES
  49.   REG_DS,
  50. # define REG_DS        REG_DS
  51.   REG_EDI,
  52. # define REG_EDI    REG_EDI
  53.   REG_ESI,
  54. # define REG_ESI    REG_ESI
  55.   REG_EBP,
  56. # define REG_EBP    REG_EBP
  57.   REG_ESP,
  58. # define REG_ESP    REG_ESP
  59.   REG_EBX,
  60. # define REG_EBX    REG_EBX
  61.   REG_EDX,
  62. # define REG_EDX    REG_EDX
  63.   REG_ECX,
  64. # define REG_ECX    REG_ECX
  65.   REG_EAX,
  66. # define REG_EAX    REG_EAX
  67.   REG_TRAPNO,
  68. # define REG_TRAPNO    REG_TRAPNO
  69.   REG_ERR,
  70. # define REG_ERR    REG_ERR
  71.   REG_EIP,
  72. # define REG_EIP    REG_EIP
  73.   REG_CS,
  74. # define REG_CS        REG_CS
  75.   REG_EFL,
  76. # define REG_EFL    REG_EFL
  77.   REG_UESP,
  78. # define REG_UESP    REG_UESP
  79.   REG_SS
  80. # define REG_SS    REG_SS
  81. };
  82. #endif
  83.  
  84. /* Definitions taken from the kernel headers.  */
  85. struct _libc_fpreg
  86. {
  87.   unsigned short int significand[4];
  88.   unsigned short int exponent;
  89. };
  90.  
  91. struct _libc_fpstate
  92. {
  93.   unsigned long int cw;
  94.   unsigned long int sw;
  95.   unsigned long int tag;
  96.   unsigned long int ipoff;
  97.   unsigned long int cssel;
  98.   unsigned long int dataoff;
  99.   unsigned long int datasel;
  100.   struct _libc_fpreg _st[8];
  101.   unsigned long int status;
  102. };
  103.  
  104. /* Structure to describe FPU registers.  */
  105. typedef struct _libc_fpstate *fpregset_t;
  106.  
  107. /* Context to describe whole processor state.  */
  108. typedef struct
  109.   {
  110.     gregset_t gregs;
  111.     /* Due to Linux's history we have to use a pointer here.  The SysV/i386
  112.        ABI requires a struct with the values.  */
  113.     fpregset_t fpregs;
  114.     unsigned long int oldmask;
  115.     unsigned long int cr2;
  116.   } mcontext_t;
  117.  
  118. /* Userlevel context.  */
  119. typedef struct ucontext
  120.   {
  121.     unsigned long int uc_flags;
  122.     struct ucontext *uc_link;
  123.     stack_t uc_stack;
  124.     mcontext_t uc_mcontext;
  125.     __sigset_t uc_sigmask;
  126.     struct _libc_fpstate __fpregs_mem;
  127.   } ucontext_t;
  128.  
  129. #endif /* sys/ucontext.h */
  130.